/* global util: false, Namespace: false, jNs: false */
"use strict";
void(function(jNs, fn) {
    var ns = jNs();

    Object.keys(fn).forEach(function(name) {
        var m = fn[name];
        if (util.isFunction(m)) {
            jNs[name] = m.bind(ns);
        }
    });

    Object.defineProperty(jNs, "modules", {
        configurable: false,
        get: function() {
            return ns.modules;
        }
    });
})(jNs, Namespace.prototype);
